package com.zx._12_算法.algorithm.happy;

public class TwoCha {

    /**
     * @param args
     * @Title: 不考虑时间复杂度
     * @date: 2020年3月24日下午6:44:12
     * @author: zhangxue
     */
    public static void main1(String[] args) {
        int[] arr1 = {1, 2, 5, 10, 15};
        int[] arr2 = {4, 5, 7, 9, 11};

        // 记录最小值的位置
        int i1 = 0;
        int i2 = 0;
        // 最小值,求绝对值
        int min = Math.abs(arr1[i1] - arr2[i2]);
        ;

        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr2.length; j++) {
                int a1 = arr1[i];
                int a2 = arr2[j];
                int t = Math.abs(a1 - a2);
                if (t < min) {
                    min = t;
                    i1 = i;
                    i2 = j;
                }
            }
        }
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(min);
    }

    public static void main(String[] args) {
        int[] arr1 = {1, 2, 5, 10, 15};
        int[] arr2 = {4, 5, 7, 9, 11};
        // 记录最小值的位置
        int i1 = 0;
        int i2 = 0;
        // 最小值,求绝对值
        int min = Math.abs(arr1[i1] - arr2[i2]);
        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr2.length - 1; j++) {
                // 当前的差值
                int t1 = Math.abs(arr1[i] - arr2[j]);
                // 下一个的差值
                int t2 = Math.abs(arr1[i] - arr2[j + 1]);

                // 1. 差值往下有变大的趋势，就没必要继续使用这个i进行比较了，当前的i与j就是最小的
                if (t1 < t2) {
                    if (t1 < min) {
                        min = t1;
                        i1 = i;
                        i2 = j;
                    }
                    break;
                    // 2. 差值往下有变小的趋势，继续往下走，直到出现变大趋势
                } else if (t1 > t2) {
                    continue;
                }
            }
        }
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(min);

    }
}
